package com.jtny.nytb.config.varible.vo;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import com.jtny.component.entity.PageParam;
import com.jtny.component.util.BeanUtils;
import com.jtny.nytb.config.varible.dto.ConfigGlobalPageQueryParamDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

/**
 * 全局配置管理查询 query 类
 *
 * @author 智慧能源中心 - 伍天宇
 * @package com.jtny.nytb.config.generic.variable.vo
 * @fileName ConfigGlobalManagementQueryVO.java
 * @createTime 2023年09月05日 15:40
 * @Copyright© 2023 jtny
 * 江投能源技术研究院 版权所有
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ConfigGlobalManagementQueryVO extends PageParam implements Serializable {

    private static final long serialVersionUID = 3269391061628829824L;

    @ApiModelProperty("主键ID")
    private List<Long> idList;

    /**
     * 变量编码
     */
    @ApiModelProperty("变量编码查询条件，精确查询")
    private String code;
//
//    /**
//     * 变量标识
//     */
//    @ApiModelProperty("变量标识查询条件，模糊查询")
//    private String signLike;

    /**
     * 变量名称
     */
    @ApiModelProperty("变量名称查询条件，模糊查询")
    private String nameLike;

    /**
     * 变量分类：1-平台变量，2-企业变量
     */
    @ApiModelProperty("变量分类查询条件，精确查询")
    private Integer classify;

    /**
     * 数据类型：1-普通类型，2-数字类型，3-开关，4-数据字典
     */
    @ApiModelProperty("数据类型查询条件，精确查询")
    private Integer dataType;

    /**
     * 生效开始时间范围
     */
    @ApiModelProperty("生效开始时间范围")
    private List<Long> effectiveStartTimeList;

    /**
     * 生效截至时间范围
     */
    @ApiModelProperty("生效截至时间范围")
    private List<Long> effectiveEndTimeList;

    public ConfigGlobalPageQueryParamDTO buildDto() {
        ConfigGlobalPageQueryParamDTO result = BeanUtils.copyToObject(this, ConfigGlobalPageQueryParamDTO.class);
        if (CollUtil.isNotEmpty(effectiveStartTimeList)) {
            Assert.isTrue(effectiveStartTimeList.size() == 2, "生效开始时间范围数据非法");
            // 设置 生效开始时间范围 开始时间和结束时间查询条件
            result.setEffectiveStartTimeGe(effectiveStartTimeList.get(0));
            result.setEffectiveStartTimeLe(effectiveStartTimeList.get(1));
        }

        if (CollUtil.isNotEmpty(effectiveEndTimeList)) {
            Assert.isTrue(effectiveEndTimeList.size() == 2, "生效截至时间范围数据非法");
            // 设置 生效截至时间范围 开始时间和结束时间查询条件
            result.setEffectiveEndTimeGe(effectiveEndTimeList.get(0));
            result.setEffectiveEndTimeLe(effectiveEndTimeList.get(1));
        }
        return result;
    }
}
